<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>单例模式</title>
</head>

<body>
    <div id="root"></div>
    <script>
        // class CreateUser {
        //     constructor(name) {
        //         this.name = name;
        //         this.getName();
        //     }
        //     getName() {
        //         return this.name
        //     }
        // }

        // var ProxyModal = (function () {
        //     var instance = null;
        //     return function (name) {
        //         if (!instance) {
        //             instance = new CreateUser(name);
        //         }
        //         return instance;
        //     }
        // })()
        // // 共用一个父级作用域，所以只会有一个实例
        // var a = ProxyModal('aaa')
        // var b = ProxyModal('bbb')
        // console.log(a, b)
        //赋值到闭包里
        // let sque = (function () {
        //     let _width = Symbol();

        //     class Squery {
        //         constructor(s) {
        //             this[_width] = s
        //         }

        //         foo() {
        //             console.log(this[_width])
        //         }
        //     }
        //     return Squery
        // })();

        // let ss = new sque(20);
        // ss.foo();
        // console.log(ss[_width])


        // var removeDuplicates = function (nums) {
        //     const new_num = []
        //     for (let i = 0; i < nums.length; i++) {
        //         if (nums[i] === nums[i + 1]) {
        //             for (let j = i + 1; j < nums.length; j++) {

        //                 if (nums[i] === nums[j]) {
        //                     continue
        //                 } else {
        //                     new_num.push(nums[i])
        //                     i = j - 1
        //                     break
        //                 }
        //             }
        //         } else {
        //             new_num.push(nums[i])
        //         }

        //     }
        //     return new_num

        // };

        // var removeDuplicates = function (nums) {
        //     let new_nums = []
        //     for (let i = 0; i < nums.length; i++) {
        //         if (new_nums.indexOf(nums[i]) === -1) {
        //             new_nums.push(nums[i])
        //         }
        //     }
        //     return new_nums
        // }

        // var removeDuplicates = function (nums) {
        //     let len = nums.length
        //     for (let i = 0; i < len; i++) {
        //         if (nums[i] === nums[i - 1]) {
        //             continue
        //         } else {
        //             nums.push(nums[i])
        //         }

        //     }
        //     nums.splice(0, len)
        // };


        var removeDuplicates = function (nums) {
            let left = 0
            let len = nums.length
            for (let right = 1; right < len; right++) {
                if (nums[left] === nums[right]) {
                    continue
                } else {
                    nums[++left] = nums[right]
                }

            }
            return ++left
        };
        let arr = [1, 1, 1, 2]
        let left = removeDuplicates(arr)
        console.log(arr)
        console.log(left)
    </script>
</body>

</html>